
/**
 * 自定义的资源分类，对应各个引擎中相同的资源。
 */
export enum ResType {
    Texture2D,
    SpriteFrame,
    SpriteAtlas,
    Prefab,
    Json,
    Scene,
    Material,
    AnimationClip,
    Mesh,
    Particle2D,//粒子效果
    AudioClip,
    AssetBundle,
    Remote,//
}

export type ResCallback = (err: any, res: any) => void

/**
 * 是否使用引用记数 
 * 对于一些资源很少的小游戏不需要清理资源，所以可以设置为false。
 */
// export let RECORD_RES_COUNT: boolean = true

/**
 * 各个引擎需要提供资源的辅助类需要实现的接口
 */
export default interface ResInterface {
    /**
     * 
     * @param url 加载资源
     * @param type 
     * @param callback 
     */
    loadRes(url: string, type: ResType, callback: ResCallback): void;

    /**
     * 清理资源
     * @param url 
     */
    release(url: any): void;

    /**
     * 获取资源
     * @param url 
     * @param ResType 自定义的资源类型 
     */
    getRes(url: string, type: ResType): any;

    /**
     * 获得资源的依赖资源
     * @param url 
     */
    getDependsRecursively(url: any): any;


}
